#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;
//vector<int> twoSum(vector<int>& nums, int target) 
//{
//
//	for (int i = 0; i < nums.size(); i++)
//	{
//		for (int j = i + 1; j < nums.size(); j++)
//		{
//			if (nums[j] == target - nums[i])
//			{
//				return { i,j };
//			}
//		}
//	}
//}

vector<int> twoSum(vector<int>& nums, int target)
{
	unordered_map<int, int> hash;
	for (int i = 0; i < nums.size(); i++)
	{
		auto temp = hash.find(target - nums[i]);
		if (temp != hash.end())
		{
			return { temp->second,i };
		}
		hash[nums[i]] = i;
	}
	return {};
}
int main()
{
	vector<int> v = { 2,7,11,15 };
	int target = 9;
	vector<int> ans = twoSum(v, target);

	for (int i = 0; i < ans.size(); i++)
	{
		cout << ans[i] << " ";
	}
	return 0;
}